In some types of communications systems, a transmitter converts a sequence of data symbols into multiple serial data streams and transmits the serial data streams over multiple data lanes to a receiver by using a transmit clock signal. The receiver reconstructs the transmit clock signal of the transmitter for each data lane based on the data stream received from the transmitter in that data lane. Although the reconstructed clock signals have the same average frequency as the transmit clock signal over a sufficiently long time period, the frequency of each reconstructed clock signal may independently drift away from the average frequency in shorter time periods because of changing conditions in the data lanes. For example, an impedance of a data lane may vary over time and affect the propagation delay of the data stream transmitted through that data lane.
The receiver converts data in each data stream into data symbols and stores the data symbols into a corresponding elastic buffer based on the reconstructed clock signal of the data stream. Additionally, the receiver reads data symbols from each elastic buffer by using a receiver clock signal having an average frequency that may differ slightly from the average frequency of the transmit clock signal. Further, the receiver reconstructs the sequence of data symbols from the data symbols read from the elastic buffers.
In these types of communications systems, the transmitter periodically transmits a skip ordered set in each data stream to compensate for the frequency differences between the transmit clock signal, the reconstructed clock signals, and the receiver clock signal. A skip ordered set is an ordered sequence of control symbols that are distinguishable from data symbols in the data stream. The receiver stores the control symbols of a skip ordered set of a data stream into the elastic buffer containing data symbols of the data stream. Additionally, the receiver selectively adds control symbols to the skip ordered sets to avoid data underflow from occurring in the elastic buffers and selectively deletes control symbols from the skip ordered sets to prevent data overflow from occurring in the elastic buffers. In this way, the receiver compensates for the frequency differences between the transmit clock signal, the reconstructed clock signals, and the receiver clock signal.
Additionally, the receiver includes deskew buffers for aligning the data symbols in the elastic buffers. The data symbols may be misaligned from each other because of different propagation delays in the receiver (e.g., static skew). For example, signal traces in the receiver may have different lengths and impedances which affect propagation delays of the data streams and data symbols written into the elastic buffers. Additionally, data symbols may be misaligned in the elastic buffers as result of the receiver adding control symbols to skip ordered sets and deleting symbols from skip ordered sets (e.g., dynamic skew). Each of the deskew buffers is capable of storing a number of data symbols of a data stream in addition to a maximum number of control symbols allowed in a skip ordered set of the data stream. In applications in which the receiver receives many data streams from the transmitter, the deskew buffers may consume a considerable amount of power and occupy a considerable amount of area in the receiver. For example, the deskew buffers may be implemented in an integrated circuit and may consume a considerable amount of power and occupy a considerable amount of area in the integrated circuit.
In light of the above, a need exists for an improved communication system for transmitting data through multiple data lanes. A further need exists for reducing the size and power consumption of deskew buffers for deskewing data symbols in a receiver.